package Controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import VentanasEmergentes.*;

//importamos las clases del paquete que necesitamos para mostrar la ventana y generar las acciones pertinentes...

/*
 * esta clase me permite poder manejar la edicion de instrucciones que el sujeto desee ejecutar...
 */
public class EdicionInstrucciones {

	//atributos de la clase...
	static EditarInstrucciones edicion;
	
	//variables estaticas auxiliares que me permiten poder almacenar el contenido de la accion a realizar 
	static String agregar;
	static int eliminar;
	static String borrartodo;
	
	//variables estaticas que me permitiran poder isntanciar las distintas ventanas y asi poder agregarle los oyentes determinados..
	static Nuevo nuevo;
	static AgregarInstruccion agregarInstruc;
	static Eliminacion eliminaVent;
	
	//constructor de la clase...
	public EdicionInstrucciones (){
		
		edicion = new EditarInstrucciones();//instancia de la ventana que se desea mostrar...
		edicion.setAlwaysOnTop(true);
		
		//agregamos los oyentes a los JRadioButton de este personaje...
		edicion.getjRadioButton1().addActionListener(new Selecciona());
		edicion.getjRadioButton2().addActionListener(new Selecciona());
		edicion.getjRadioButton3().addActionListener(new Selecciona());
		
		//agregamos el oyente al boton aceptar...
		edicion.getjButton1().addActionListener(new EscogeOpcion());
		
		//agregamos el oyente al boton cancelar...
		edicion.getjButton2().addActionListener(new OpcionCancelar());
	}
	
	//innerclass que me permiten poder interactuar con este sacowea y mostrarle las ventanitas que el desee....
	public static class Selecciona implements ActionListener{
		
		public void actionPerformed(ActionEvent e){
		
			//si selecciona alguna opcion el boton aceptar queda habilitado para poder ser imprimido...
			if (edicion.getjRadioButton1().isRolloverEnabled() && edicion.getjRadioButton2().isRolloverEnabled() && edicion.getjRadioButton3().isRolloverEnabled())
				edicion.getjButton1().setEnabled(true);
		}
	}
	
	//innerclass que me permite poder alamcenar la opcion que escogio y ademas cierra la ventana...
	public static class EscogeOpcion implements ActionListener{
		
		public void actionPerformed(ActionEvent e){
			
			//seleccionamos lo que el usuario escogio...
			if (edicion.getjRadioButton1().isSelected()){
				
				agregarInstruc = new AgregarInstruccion();
				agregarInstruc.getjButton3().addActionListener(new OpcionAceptarAgregar());
				agregarInstruc.getjButton1().addActionListener(new OpcionCerrarAgregar());
				agregarInstruc.getjButton4().addActionListener(new OpcionAyudaAgregar());
				
			}
			
			if (edicion.getjRadioButton2().isSelected()){
				
				eliminaVent = new Eliminacion();
				eliminaVent.getjButton3().addActionListener(new OpcionAceptarEliminar());
				eliminaVent.getjButton1().addActionListener(new OpcionCancelarEliminar());
			}

			if (edicion.getjRadioButton3().isSelected()){
			
				nuevo = new Nuevo();
				nuevo.getjButton1().addActionListener(new OpcionAceptarNuevo());
				nuevo.getjButton2().addActionListener(new OpcionCancelarNuevo());
			}
			
			edicion.dispose();//cerramos la ventana de mierda...
			
		}
	}
	
	//innerclass que me permite poder agregar el oyente a cancelar...
	public static class OpcionCancelar implements ActionListener{
		
		public void actionPerformed(ActionEvent e){
			
			edicion.dispose();//cerramos la ventana en proceso...
		}
	}
	
	//tanda de innerclass que me permitiran poder agregar los diversos oyentes a la ventana de agregar instruccion...
	//innerclass que representa la opcion aceptar...
	public static class OpcionAceptarAgregar implements ActionListener {
		
		public void actionPerformed(ActionEvent e){
			
			//obtenemos los textos de los campos de textos...
			agregar = agregarInstruc.getjTextField1().getText();
			
			System.out.println(agregar);
			
			agregarInstruc.dispose();//cerramos la ventana...
		}
	}
	
	//innerclass de la opcion cerrar de la ventana agregar instruccion.
	public static class OpcionCerrarAgregar implements ActionListener{
		
		public void actionPerformed(ActionEvent e){
			
			agregarInstruc.dispose();//cerramos la ventana
		}
	}
	
	//innerclass que permite poder generar la ayuda al usuario aweonao en caso de que no sepa quw wea hacer... 
	public static class OpcionAyudaAgregar implements ActionListener{
		
		public void actionPerformed(ActionEvent e){
			
			JOptionPane.showMessageDialog(null, "Instrucciones: LOAD, STORE, etc");
			
		}
	}

	//tanda de innerclass que permite poder trabajar con la ventana de eliminar una instruccion...
	//innerclass que permite poder generar la opcion aceptar de dicha ventana...
	public static class OpcionAceptarEliminar implements ActionListener{
		
		@SuppressWarnings("static-access")
		public void actionPerformed(ActionEvent e){
			
			//manejamos el tratamiento de errores...
			try {
				 
				eliminar = (int) eliminaVent.getjSpinner1().getValue();
				System.out.println(eliminar);
			}catch(Exception ex){
				//atrapamos la exception...
				JOptionPane.showMessageDialog(null, "Ingrese datos validos");
			}
			
			eliminaVent.dispose();//cerramos la ventana...
		}
	}
	
	//innerclass que permite cancelar la opcion de eliminacion...
	public static class OpcionCancelarEliminar implements ActionListener {
		
		public void actionPerformed(ActionEvent e){
			
			eliminaVent.dispose();//cerramos la ventana...
		}
	}
	
	//tanda de innerclass que nos permite poder generar la ultima opcion de la ventana de codificar...
	//innerclass que me permite poder generar la opcion aceptar de la ventana de nuevo archivo...
	public static class OpcionAceptarNuevo implements ActionListener{
		
		public void actionPerformed(ActionEvent e){
			
			borrartodo = nuevo.getjTextArea1().getText();//obtenemos el texto de la wea que va a escribir...
			
			nuevo.dispose();//cerramos la ventana...
		}
	}
	
	//innerclass que permite cancelar la opcion de eliminacion...
	public static class OpcionCancelarNuevo implements ActionListener {
			
		public void actionPerformed(ActionEvent e){
			
			nuevo.dispose();//cerramos la ventana...
		}
	}
}